import pymysql

class Mysql():
    def __init__(self, host, user, password, database):
        self.con = pymysql.connect(host=host, user=user, password=password, database=database)
        self.cur = self.con.cursor()

    def chaxun(self, sql):
        self.cur.execute(sql)
        return self.cur.fetchall()

    def close(self):
        self.cur.close()
        self.con.close()

    def assertEqual(self, sql, expected_result):
        # 调用查询语句 获取查询结果
        result = self.chaxun(sql)
        # 响应（预期）结果比较数据库（实际）结果是否相等
        assert expected_result == result[0][0], f"数据库查询结果与预期结果不一致"
        # 返回数据库中根据sql语句查询到的值
        return result[0][0]

    def assertNotEqual(self, sql, expected_result):
        # 调用查询语句 获取查询结果
        result = self.chaxun(sql)
        # 响应（预期）结果比较数据库（实际）结果是否不相等
        assert expected_result != result[0][0], f"数据库查询结果与预期结果一致"
        # 返回数据库中根据sql语句查询到的值
        return result[0][0]

    def asserteTrue(self, sql, expected_result):
        # 调用查询语句 获取查询结果
        result = self.chaxun(sql)
        # 响应（预期）结果比较数据库（实际）结果是否为True
        assert result[0][0] == expected_result, f"数据库查询结果与预期结果不一致"
        # 返回数据库中根据sql语句查询到的值
        return result[0][0]

    def asserteFalse(self, sql, expected_result):
        # 调用查询语句 获取查询结果
        result = self.chaxun(sql)
        # 响应（预期）结果比较数据库（实际）结果是否为False
        assert expected_result != result[0][0], f"数据库查询结果与预期结果一致"
        # 返回数据库中根据sql语句查询到的值
        return result[0][0]

    def assertIn(self, sql, expected_result):
        # 调用查询语句 获取查询结果
        result = self.chaxun(sql)
        # 响应（预期）结果中不否包含数据库（实际）结果
        assert expected_result in str(result), f'数据库查询结果包含在预期结果中'
        # 返回数据库中根据sql语句查询到的值
        return result[0][0]

    def assertNotIn(self, sql, expected_result):
        # 调用查询语句 获取查询结果
        result = self.chaxun(sql)
        # 响应（预期）结果中是否包含数据库（实际）结果
        assert expected_result not in str(result), f'数据库查询结果不包含在预期结果中'
        # 返回数据库中根据sql语句查询到的值
        return result[0][0]


